Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS

Hướng dẫn cách tạo Swap trên VPS SSD sử dụng CentOS giúp VPS đỡ bị treo, lag khi đầy bộ nhớ.

Lưu ý: Nếu VPS của bạn sử dụng ổ cứng SSD thì hãy tạo Swap, còn nếu sử dụng HDD mà tạo Swap cũng không cải thiện được gì cả, đôi khi lợi bất cập hại.

Với các VPS dùng công nghệ ảo hóa OpenVZ, có thể bạn sẽ không tạo được Swap do hệ thống đã tự động kích hoạt sẵn rồi nha

1. Kiểm tra Swap

Để kiểm tra VPS của bạn đã có Swap chưa bạn hãy dùng lệnh sau (Áp dụng được cả trên CentOS và Ubuntu)

free -m

Tạo swap vps

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (1)

Bạn sẽ dễ dàng thấy thông số Swap (Như hình này là không có Swap)

2. Kiểm tra dung lượng ổ cứng của VPS

Tất nhiên để tạo được bộ nhớ ảo Swap thì bạn phải kiểm tra xem ổ cứng có còn trống để bạn giành 1 phần bộ nhớ để làm bộ nhớ ảo hay không

Bạn dễ dàng kiểm tra dung lượng ổ cứng còn trống bao nhiêu GB bằng lệnh sau

df -h

Ví dụ VPS của mình còn trống 5.6GB nên tha hồ tạo Swap

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (2)

3. Tạo bộ nhớ ảo Swap cho VPS

Thông thường, bạn nên tạo Swap có dung lượng bằng hoặc gấp đôi dung lượng RAM (Vd: RAM 1GB thì nên tạo 2GB Swap)

Để tạo Swap 1GB 1 bạn dùng lệnh sau

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k

Để tạo Swap 2GB 1 bạn dùng lệnh sau

sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (3)

Ở vd này mình tạo 2GB Swap

Tiếp theo bạn tạo phân vùng cho Swap bằng lệnh sau

mkswap /swapfile

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (4)

Tiếp theo bạn hãy chmod cho file swap bằng lệnh

chown root:root /swapfile
chmod 0600 /swapfile

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS ()

Tiếp theo, bạn có thể kích hoạt swap bằng câu lệnh

swapon /swapfile

Tiếp theo, thiết lập swap tự động được kích hoạt mỗi khi reboot

echo /swapfile none swap defaults 0 0 >> /etc/fstab

Giờ bạn kiểm tra lại bộ nhớ bằng lệnh free -m sẻ thấy có Swap rồi đấy

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (6)

4. Cấu hình Swappiness

Swappiness là độ ưu tiên sử dụng swap, khi lượng RAM còn lại bằng giá trị của swappiness (tính theo tỷ lệ phần trăm) thì swap sẽ được sử dụng. Swappiness có giá trị trong khoảng 0 – 100.

  • swappiness = 0: swap chỉ được dùng khi RAM được sử dụng hết
  • swappiness = 10: swap được sử dụng khi RAM còn 10%
  • swappiness = 60: swap được sử dụng khi RAM còn 60%
  • swappiness = 100: swap được ưu tiên như là RAM

Do tốc độ xử lý dữ liệu trên RAM cao hơn nhiều so với Swap, do đó bạn nên đặt giá trị này về gần với 0 để tận dụng tối đa sức mạnh hệ thống. Tốt nhất nên chỉnh về 10.

Kiểm tra mức độ sử dụng file swap của hệ thống bằng cách chạy dòng lệnh sau (mặc định bạn sẻ thấy swappiness là 30 như hình bên dưới)

cat /proc/sys/vm/swappiness

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (7)

Chỉnh thông số swappiness bằng cách dùng lệnh sysctl

sysctl vm.swappiness=10

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (8)

Kiểm tra lại swappiness bạn sẽ thấy kết quả trả về 10 (cat /proc/sys/vm/swappiness)

Để đảm bảo giữ nguyên thông số này mỗi khi khởi động lại VPS bạn cần điều chỉnh tham số vm.swappiness ở cuối file /etc/sysctl.conf (nếu không có bạn hãy add thủ công vào)

Mở file sysctl.conf bằng trình soạn thảo Nano

nano /etc/sysctl.conf

Tiếp đó thêm vào cuối dòng bên dưới, sau đó nhấn Ctrl + X > Y > Ctrl + M + A để thoát.

vm.swappiness = 10

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (9)

Khởi động lại VPS và kiểm tra lại kết quả

swapon -s
cat /proc/sys/vm/swappiness

Lưu ý: Với CentOS 7.2 có thể tune profile sẽ overwrite vm.swappiness mỗi lần reboot, bạn cần kiểm tra profile nào đang overwrite để cấu hình lại thủ công.

grep vm.swappiness /usr/lib/tuned/*/tuned.conf

Bạn sẽ nhìn thấy

[root@nguyenthanhtbbgmail ~]# grep vm.swappiness /usr/lib/tuned/*/tuned.conf
/usr/lib/tuned/latency-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/throughput-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/virtual-guest/tuned.conf:vm.swappiness = 30
[root@nguyenthanhtbbgmail ~]#

Lúc này, bạn hãy mở file /usr/lib/tuned/virtual-guest/tuned.conf, tìm vm.swappiness và thay đổi vm.swappiness = 30 thành vm.swappiness = 10

nano /usr/lib/tuned/virtual-guest/tuned.conf

Ctrl + X > Y > Ctrl + M + A để thoát.

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (10)

Sau đó, khởi động lại VPS và kiểm tra lại kết quả.

Hướng dẫn tạo Swap trên VPS SSD sử dụng CentOS (11)

Dùng lệnh htop để xem bộ nhớ VPS

5. Thay đổi dung lượng swap

Nếu bạn muốn thay đổi dung lượng swap, hãy thực hiện theo các bước sau

– Tắt swap

swapoff /swapfile

– Xóa file swap

rm -f /swapfile

– Tạo mới file swap với dung lượng mong muốn. Ví dụ mình tạo 1GB (1024k)

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k

– Tạo phân vùng swap

mkswap /swapfile

– Kích hoạt swap

swapon /swapfile

– chmod cho swap

chown root:root /swapfile
chmod 0600 /swapfile

– Kiểm tra lại tình trạng swap

free -m

Một số trường hợp bạn sẻ gặp phải thông báo như “swapoff: /swapfile: swapoff failed: Cannot allocate memory” khi thay đổi dung lượng Swap thì có thể làm theo hướng dẫn dưới đây

1. Tạo 1 file swap mới với tên swapfile4G (Vd: Mình muốn tăng swap lên 4GB)

sudo fallocate -l 4G /swapfile4G
sudo mkswap /swapfile4G
sudo swapon /swapfile4G
sudo swapoff /swapfile # < old swapfile sudo rm /swapfile sudo swapon -s # verify

2. Sau cùng bạn thiết lập swap tự động được kích hoạt mỗi khi reboot

echo /swapfile4G none swap defaults 0 0 >> /etc/fstab

Khi thay đổi dung lượng swap, các cài đặt từ trước như tự động kích hoạt khi server reboot, thông số Swappiness được giữ nguyên nên bạn không cần phải thao tác gì thêm.

Giờ khởi động lại server rồi kiểm tra lại kết quả thôi.

Chúc bạn thành công!

Nguồn: thuthuatvip